In the field of data processing, in particular but not exclusively in relation to image processing, it is known to capture image data, for example via a digital camera, and subject to the captured image data to one or more digital signal processing techniques. For example, in relation to automotive applications, such as so-called Advanced Driver Assistance Systems (ADASs), it is necessary to process captured image data in order for an ADAS to recognise delineation of a driving lane or a road turning. Similarly, in relation to surveillance applications, it is desirable to detect changes to a portion of an image captured in respect of a location or Region Of Interest (ROI) being monitored.
As part of an image processing process, image data is typically subjected to one or more image processing operators or filters, for example a Sobel operator for edge detection. In this respect, it is known to implement a so-called vision accelerator system in hardware that possesses a fixed and limited range of filters and operators. Such hardware comprises a memory for storing image data and is coupled to a memory bus. A number of hardware image processing engines are coupled to the memory bus, a Central Processing Unit (CPU) also being coupled to the memory bus and a control bus. Each image processing engine is capable of carrying out a different image processing operation, for example a Sobel operation or an absolute/angle transformation of the gradient. Whilst such an implementation is efficient with respect to minimising function calls, the pure hardware approach is inflexible, for example where additional functionality is required of the hardware implementation for different applications, such as different filtering functionality is required of the hardware implementation that is not supported by the hardware implementation.
In order to mitigate the shortcomings of the pure hardware implementation, it is known to provide a software-based vision accelerator. Whilst such vision accelerators provide flexibility of operation such flexibility comes at a penalty of requiring a high number of repeated calls of a same instruction sequence defining a function. In this respect, three instructions blocks are required per call: to retrieve data, to perform an operation, and to store the data afterwards. Furthermore, 105 to 106 calls, for example, of the instruction sequence are required. Consequently, execution speed and hence performance of the software-based vision accelerator is undesirably poor and also has a power consumption penalty associated with it.